//package com.itheima.filter;
//
//import com.alibaba.fastjson.JSON;
//import com.itheima.po.R;
//import org.springframework.util.AntPathMatcher;
//
//import javax.servlet.*;
//import javax.servlet.annotation.WebFilter;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.Arrays;
//import java.util.List;
//
///**
// * @Author Andy
// * @Description //TODO CheckLoginFilter
// * @Date 2022/3/9 8:50 上午
// * @Version 1.0
// **/
//// 通过@WebFilter(urlPatterns = "/*")来拦截一切URL，然后在过滤器处理方法中选择
////    放行不需要处理的URL，处理需要处理的URL
//@WebFilter(urlPatterns = "/*")
//public class CheckLoginFilter implements Filter {
//
////    request 请求
////    response 响应
////    chain 调用链来挨个处理请求，最后把请求交给controller
////    CheckLoginFilter初始化的时候，把这个类的对象，放入到调用链链表中
//
//    private AntPathMatcher antPathMatcher = new AntPathMatcher();
//    @Override
//    public void doFilter(ServletRequest request, ServletResponse response,
//                         FilterChain chain) throws IOException, ServletException {
//
//        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
//        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
//        String uri = httpServletRequest.getRequestURI();
////        判断uri是否需要拦截
////        匹配原则  /backend/** /front/** /employee/login /employee/logout
//        //        如果不需要，直接放行
//        List<String> urlIgnoreList = Arrays.asList("/backend/**",
//                                             "/front/**",
//                                             "/employee/login",
//                                             "/employee/logout");
//        boolean canIgnore = false;
//        for (int i =0 ;i < urlIgnoreList.size() ; i++){
//            canIgnore = antPathMatcher.match(urlIgnoreList.get(i), uri);
////            可忽略的uri，直接放行
//            if (canIgnore){
//                chain.doFilter(request, response);
////                加return，该方法直接结束，后续代码，不继续往下执行
//                return;
//            }
//        }
////       如果需要，通过session中的用户ID确定该用户是否登录过， 获取session中的用户ID
//        Long employeeId = (Long)httpServletRequest.getSession().getAttribute("employeeId");
//        if (null == employeeId){
//            //                没登录，返回R类对象，msg为NOTLOGIN
//            httpServletResponse.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));
////                加return，该方法直接结束，后续代码，不继续往下执行
//            return;
//        }
//        //     登录过，直接放行
//        else {
//            chain.doFilter(request, response);
//        }
////        n行代码
//    }
//}
